package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperateProductTypeGetPageDTO;
import com.itlong.cloud.POJO.DTO.operate.OperateProductTypeSaveDTO;
import com.itlong.cloud.POJO.VO.operate.OperateProductTypeDetailVO;
import com.itlong.cloud.POJO.VO.operate.OperateProductTypeVO;
import com.itlong.cloud.utils.page.Page;

/**
 * <desc>
 *      产品型号管理接口
 * </desc>
 *
 * @createDate 2017-10-13.
 */
public interface IOperateProductTypeService {

    /**
     * <desc>
     *      判断产品型号存在性
     * <desc/>
     *
     * @param typePid 产品型号Pid
     * @return 同型号Pid的个数
     * @author Chunjian.G
     * @createDate 2017-10-26
     */
    Integer checkProductExist(String typePid) throws Exception;

    /**
     * <desc>
     *      添加单个产品型号
     * <desc/>
     *
     * @param saveDTO 新增型号信息
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer saveProductType(OperateProductTypeSaveDTO saveDTO) throws Exception;

    /**
     * <desc>
     *      根据型号ID更新产品型号
     * <desc/>
     *
     * @param updateDTO 型号更新信息
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer updateProductType(OperateProductTypeSaveDTO updateDTO) throws Exception;

    /**
     * <desc>
     *      查询是否有项目关联设备类型
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Qiang.S
     * @createDate 2018-07-25
     */
    Integer getProductCount(String typePid) throws Exception;

    /**
     * <desc>
     *      删除设备型号
     * <desc/>
     *
     * @param typePid 型号ID列表
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Integer removeProductType(String typePid) throws Exception;

    /**
     * <desc>
     *      分页查询产品型号
     * <desc/>
     *
     * @param pageDTO 查询条件DTO
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    Page<OperateProductTypeVO> getPage(OperateProductTypeGetPageDTO pageDTO) throws Exception;

    /**
     * <desc>
     *      获取单个产品型号详情
     * <desc/>
     *
     * @param typePid 型号ID
     * @return
     * @author Chunjian.G
     * @createDate 2017-10-13
     */
    OperateProductTypeDetailVO getDetail(String typePid) throws Exception;


    /**
     * <desc>
     *      检测是否存在云电梯的产品。
     * <desc/>
     *
     * @param deviceType 设备类型
     * @param typeCode 型号代号
     * @return
     * @author shengen.T
     * @createDate 2018-04-17
     */
    Integer checkCloudElevatorExist(Integer deviceType,String typeCode) throws Exception;
}

